Gráficos en mapas

Elizabeth Valles

Enero 2022

Paquetes en R - gráficos de México

mxmaps

Instalación

#if (!require("devtools")) {
#install.packages("devtools")} # opción con devtools

#devtools::install_github("diegovalle/mxmaps") # opción con devtools

#remotes::install_github("diegovalle/mxmaps") # opción con remotes

#library("mxmaps")

Lectura de archivos

datos <- read_csv("/home/eli/Desktop/Neurobiologia/Platicas/IGeografia/data/datos_curados.dplyr.csv") 
glimpse(datos)
## Rows: 928
## Columns: 3
## $ Estado  <chr> "Aguascalientes", "Baja California", "Baja California Sur", "C…
## $ año     <dbl> 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 19…
## $ cuartos <dbl> 636855, 3247343, 1793106, 557151, 1385880, 3845781, 12012296, …

Lectura de archivo que contiene los códigos por estado y municipio

code_data.base <- read_csv("/home/eli/Desktop/Neurobiologia/Platicas/IGeografia/data/Catalogo Unico de Claves de Areas Geoestadisticas Estatales, Municipales y Localidades.csv") %>% 
  select(2,3,4,6:8,10,11,16:19) %>% # seleccionar variables de intrés
  distinct(state_name, .keep_all = TRUE) # filtra los valores únicos de state_name, manteniendo todas las variables 
print(code_data.base)
## # A tibble: 32 × 12
##    state_code state_name   nom_abr capital_name mpe_code municipio_name latitud 
##         <dbl> <chr>        <chr>   <chr>           <dbl> <chr>          <chr>   
##  1          1 Aguascalien… Ags.    Aguascalien…        1 Aguascalientes "21°52´…
##  2          2 Baja Califo… BC      Ensenada            1 Ensenada       "31°48´…
##  3          3 Baja Califo… BCS     Comondú             1 Ciudad Consti… "25°02´…
##  4          4 Campeche     Camp.   Calkiní             1 Calkiní        "20°22´…
##  5          5 Coahuila de… Coah.   Abasolo             1 Abasolo        "27°10´…
##  6          6 Colima       Col.    Armería             1 Ciudad de Arm… "18°56´…
##  7          7 Chiapas      Chis.   Acacoyagua          1 Acacoyagua     "15°20´…
##  8          8 Chihuahua    Chih.   Ahumada             1 Miguel Ahumada "30°37´…
##  9         10 Durango      Dgo.    Canatlán            1 Canatlán       "24°31´…
## 10         11 Guanajuato   Gto.    Abasolo             1 Abasolo        "20°27´…
## # … with 22 more rows, and 5 more variables: longitud <chr>, pob_total <chr>,
## #   pob_masculina <chr>, pob_femenina <chr>, total de viviendas habitadas <chr>

Unir las bases: datos y code_data.base

datos.code <- datos %>% 
  rename_at(1,~"state_name") %>% 
  mutate(state_name = recode(state_name, "Veracruz" = "Veracruz de Ignacio de la Llave",
                             "Coahuila" = "Coahuila de Zaragoza",
                              "Michoacán" = "Michoacán de Ocampo",
                             "Estado de México" = "México")) %>% 
  left_join(code_data.base) %>% # incluye todas las filas de x (datos)
  write_csv(., "/home/eli/Desktop/Neurobiologia/Platicas/IGeografia/data/datos.code.csv") 
print(datos.code)
## # A tibble: 928 × 14
##    state_name             año  cuartos state_code nom_abr capital_name  mpe_code
##    <chr>                <dbl>    <dbl>      <dbl> <chr>   <chr>            <dbl>
##  1 Aguascalientes        1992   636855          1 Ags.    Aguascalient…        1
##  2 Baja California       1992  3247343          2 BC      Ensenada             1
##  3 Baja California Sur   1992  1793106          3 BCS     Comondú              1
##  4 Campeche              1992   557151          4 Camp.   Calkiní              1
##  5 Chiapas               1992  1385880          7 Chis.   Acacoyagua           1
##  6 Chihuahua             1992  3845781          8 Chih.   Ahumada              1
##  7 Ciudad de México      1992 12012296          9 CDMX    Azcapotzalco         1
##  8 Coahuila de Zaragoza  1992  1323034          5 Coah.   Abasolo              1
##  9 Colima                1992  1558199          6 Col.    Armería              1
## 10 Durango               1992   962852         10 Dgo.    Canatlán             1
## # … with 918 more rows, and 7 more variables: municipio_name <chr>,
## #   latitud <chr>, longitud <chr>, pob_total <chr>, pob_masculina <chr>,
## #   pob_femenina <chr>, total de viviendas habitadas <chr>

Filtrar año y modificar el nombre de las varibles al formato compatible con mxmaps

datos.code <- datos.code %>% 
  filter(año == "2020") %>% 
  rename("value" = "cuartos",
         "region" = "state_code")

A gráficar!

mxstate_choropleth(datos.code)

Modificar color

mxstate_choropleth(datos.code,
                   num_colors = 9)

Agregar título

mxstate_choropleth(datos.code,
                   num_colors = 9,
                   title = "Cuartos ocupados en el 2020")

Agregar leyenda

mxstate_choropleth(datos.code,
                   num_colors = 9,
                   title = "Cuartos ocupados en el 2020",
                   legend = "No. de cuartos")

Modificar colores

library(formattable)
plotmx <- mxstate_choropleth(datos.code,
                   num_colors = 9,
                   title = "Cuartos ocupados en el 2020",
                   legend = "No. de cuartos") +
  scale_fill_hue(l=40, c=60) 
plotmx

Gráfico interactivo: plotly

library(plotly)
plotmx.plotly <- ggplotly(plotmx)
plotmx.plotly

Exportar un gráfico interactivo: plotly

htmlwidgets::saveWidget(as_widget(plotmx.plotly), "plotmx.plotly.html")

Gráfico interactivo: mxmaps

library(scales)
library(leaflet)
pal <- colorNumeric("Blues", domain = datos.code$value) # crear vector de colors
mxstate_leaflet(datos.code,
                pal,
                ~ pal(value),
                ~ sprintf("State: %s<br/>Value: %s", #extraer información de la base para imprimir los nombres a presentar en el mapa
                          state_name, comma(value))) %>%
  addLegend(position = "bottomright", pal = pal, values = datos.code$value) %>% 
  addProviderTiles("CartoDB.Positron")

Actividad: mxmaps